/**
 *  一句话思路：
    算法描述：
    解决所需数据结构+算法：
**/
#include<iostream>
#include<cstring>
using namespace std;

// a存放中奖号码，b存放每次买彩票选择的号码，c存放中奖数字的数目，d存放中奖情况
int a[10], b, c[1010], d[10];

int main() {
    memset(a, 0, sizeof(a));
    memset(c, 0, sizeof(c));
    memset(d, 0, sizeof(d));
    int n;
    cin >> n;
    for(int i=1; i<=7; i++) cin >> a[i];
    for(int i=1; i<=n; i++) {
        for(int j=1; j<=7; j++) {
            cin >> b;
            for(int k=1; k<=7; k++)
                if(b == a[k])   c[i]++;
        }
    }

    for(int i=1; i<=n; i++) {
        for(int j=7; j>=1; j--) {
            if(j == c[i])
                d[j]++;
        }
    }

    for(int i=7; i>=1; i--) cout << d[i] << " ";

    return 0;
}